package cn.iocoder.yudao.module.ai.dal.mysql.datasetmark;

import java.util.*;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.ai.dal.dataobject.datasetmark.DatasetLableFilecountDO;
import cn.iocoder.yudao.module.ai.dal.dataobject.datasetmark.DatasetMarkDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.ai.controller.admin.datasetmark.vo.*;
import org.apache.ibatis.annotations.Param;

/**
 * 数据集标注行 Mapper
 *
 * @author 侯俊青
 */
@Mapper
public interface DatasetMarkMapper extends BaseMapperX<DatasetMarkDO> {

    default PageResult<DatasetMarkDO> selectPage(DatasetMarkPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<DatasetMarkDO>()
                .eqIfPresent(DatasetMarkDO::getDatasetId, reqVO.getDatasetId())
                .eqIfPresent(DatasetMarkDO::getMarkFileId, reqVO.getMarkFileId())
                .eqIfPresent(DatasetMarkDO::getMarkOriginalFileId, reqVO.getMarkOriginalFileId())
                .eqIfPresent(DatasetMarkDO::getLabelIndex, reqVO.getLabelIndex())
                .eqIfPresent(DatasetMarkDO::getMarkContent, reqVO.getMarkContent())
                .eqIfPresent(DatasetMarkDO::getSortNum, reqVO.getSortNum())
                .betweenIfPresent(DatasetMarkDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(DatasetMarkDO::getId));
    }

    List<DatasetLableFilecountDO> groupFileCountByLabelId(@Param("datasetId") Long datasetId);
}